ডেটাবেস থেকে ডেটা সংগ্রহ করার সময় Pagination (পেজিনেশন) এবং Sorting (সোর্টিং) অত্যন্ত গুরুত্বপূর্ণ দুটি প্রক্রিয়া। এগুলি অ্যাপ্লিকেশনগুলোর কর্মক্ষমতা এবং ব্যবহারকারীর অভিজ্ঞতাকে অনেক উন্নত করে, বিশেষত যখন ডেটা খুব বড় এবং সংখ্যা বিশাল হয়। স্প্রিং জেডিবিসি (Spring JDBC) ব্যবহারের মাধ্যমে এই দুটি ফিচার সহজভাবে পরিচালনা করা যায়।
Pagination এর মাধ্যমে বড় ডেটাসেটগুলিকে পেজের আকারে বিভক্ত করা হয়, যাতে একবারে এক পেজের ডেটা ব্যবহারকারীর কাছে প্রদর্শিত হয়। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন ডেটাবেসে বিশাল পরিমাণ ডেটা থাকে এবং ইউজার একবারে সব ডেটা দেখতে চায় না। পেজিনেশন ব্যবহারের মাধ্যমে আপনি একটি সীমিত পরিমাণ ডেটা প্রতিবারে রিট্রিভ করতে পারেন, যার ফলে কর্মক্ষমতা উন্নত হয় এবং সার্ভারের উপর লোড কমে।
স্প্রিং জেডিবিসি ব্যবহার করে Pagination সাধারণত LIMIT
এবং OFFSET
SQL কুয়েরি প্যারামিটার ব্যবহার করে করা হয়। LIMIT
একটি নির্দিষ্ট সংখ্যক রেকর্ড ফেরত দেয় এবং OFFSET
নির্দিষ্ট সূচনা পয়েন্ট থেকে ডেটা ফেরত নেয়।
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.util.List;
public class EmployeeDao {
private JdbcTemplate jdbcTemplate;
// DataSource Inject করা হচ্ছে
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
// পেজিনেশনসহ ডেটা রিট্রিভ করা
public List<Employee> getEmployees(int pageNo, int pageSize) {
String sql = "SELECT * FROM employee LIMIT ? OFFSET ?";
// OFFSET হিসাব করা: (পেজ নম্বর - 1) * পেজ সাইজ
int offset = (pageNo - 1) * pageSize;
return jdbcTemplate.query(sql, new Object[] {pageSize, offset}, new EmployeeRowMapper());
}
}
এখানে, pageNo
এবং pageSize
প্যারামিটার দ্বারা নির্ধারিত পেজ থেকে ডেটা রিট্রিভ করা হচ্ছে। LIMIT
এবং OFFSET
SQL কুয়েরি স্টেটমেন্টে পেজিনেশন প্রক্রিয়া প্রয়োগ করছে।
Sorting ডেটা সাজানোর প্রক্রিয়া, যা সাধারণত আলফাবেটিক, সংখ্যাগত, অথবা অন্য কোনো নির্দিষ্ট ক্রমে ডেটা প্রদর্শন করতে ব্যবহৃত হয়। যখন ডেটাবেসের মধ্যে বিশাল পরিমাণ ডেটা থাকে, তখন সঠিকভাবে সজ্জিত ডেটা ইউজারের জন্য আরও কার্যকর এবং দ্রুত অ্যাক্সেসযোগ্য হয়ে ওঠে।
Spring JDBC তে সোর্টিং সাধারণত SQL কুয়েরির ORDER BY
ক্লজ ব্যবহার করে করা হয়। আপনি যেভাবে চান সেভাবে ডেটা সজ্জিত করতে পারেন, যেমন ASC
(Ascending) বা DESC
(Descending)।
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.util.List;
public class EmployeeDao {
private JdbcTemplate jdbcTemplate;
// DataSource Inject করা হচ্ছে
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
// সোর্টিংসহ ডেটা রিট্রিভ করা
public List<Employee> getEmployeesSorted(String sortBy, String sortOrder) {
String sql = "SELECT * FROM employee ORDER BY " + sortBy + " " + sortOrder;
return jdbcTemplate.query(sql, new EmployeeRowMapper());
}
}
এখানে, sortBy
এবং sortOrder
প্যারামিটার ব্যবহার করে ডেটা সজ্জিত করা হচ্ছে। sortBy
দ্বারা কলামের নাম এবং sortOrder
দ্বারা সজ্জার ধরণ (ASC বা DESC) নির্ধারিত হয়।
প্রায়শই পেজিনেশন এবং সোর্টিং একত্রে ব্যবহার করা হয়, যেমন ব্যবহারকারী যখন ডেটা পেজিনেটেডভাবে দেখতে চায় এবং সেই ডেটা সঠিকভাবে সাজানোও থাকতে চায়।
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.util.List;
public class EmployeeDao {
private JdbcTemplate jdbcTemplate;
// DataSource Inject করা হচ্ছে
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
// পেজিনেশন এবং সোর্টিং একত্রে ডেটা রিট্রিভ করা
public List<Employee> getEmployees(int pageNo, int pageSize, String sortBy, String sortOrder) {
String sql = "SELECT * FROM employee ORDER BY " + sortBy + " " + sortOrder + " LIMIT ? OFFSET ?";
int offset = (pageNo - 1) * pageSize;
return jdbcTemplate.query(sql, new Object[] {pageSize, offset}, new EmployeeRowMapper());
}
}
এখানে, pageNo
, pageSize
, sortBy
, এবং sortOrder
প্যারামিটার ব্যবহার করে ডেটা পেজিনেটেড এবং সজ্জিত (sorted) হয়ে রিট্রিভ করা হচ্ছে।
Read more